Next | Prev | Up | Top | Contents | Index

Configuring the System Files

Inform IRIX and the device driver of the existence of a VME device by adding a VECTOR statement to a file in the directory /var/sysgen/system (see "System Configuration Files"). The syntax of a VECTOR statement is documented in two places:

In addition to the VECTOR statement, you may need to code an IPL statement.


Coding the VECTOR Statement

The important elements in a VECTOR line are as follows:

bustypeSpecified as VME for VME devices. The VECTOR statement can be used for other types of buses as well.
module The base name of the device driver for this device, as used in the /var/sysgen/master.d database (see "Master Configuration Database" and "How Names Are Used in Configuration").
adapter The number of the VME bus where the device is attached--0 or 1 in a Crimson system; the bus number in a Challenge or Onyx machine.
ipl The interrupt level at which the device causes interrupts, from 0 to 7.
vector An 8-bit value between 1 and 254 that the device returns during an interrupt acknowledge cycle.
ctlr The "controller" number is simply an integer parameter that is passed to the device driver at boot time. It can be used for example to specify a logical unit number.
iospace, iospace2, iospace3 Each iospace group specifies the VME address space, the starting bus address, and the size of a segment of VME address space used by this device.
probe or exprobe Specify a hardware test that can be applied at boot time to find out if the device exists.

Use the probe or exprobe parameter to program a test for the existence of the device at boot time. If the device does not respond (because it is offline or because it has been removed from the system), the lboot command will not invoke the device driver for this device.

The device driver specified by the module parameter is invoked at its pfxedtinit() entry point, where it receives most of the other information specified in the VECTOR statement (see "Entry Point edtinit()").

Omit the vector parameter in either of two cases: when the device does not cause interrupts, or when it supports a programmable interrupt vector (see "Allocating an Interrupt Vector Dynamically").

Use the iospace parameters to pass in the exact VME bus addresses that correspond to this device, as configured in the device. Up to three address space ranges can be passed to the driver. This does not restrict the device--it can use other ranges of addresses, but the device driver has to deduce their addresses from other information. The device driver typically uses this data to set up PIO maps (see "Mapping PIO Addresses").


Using the IPL Statement

In a Challenge or Onyx system only, you can direct VME interrupts to specific CPUs. This is done with the IPL statement, also written into a file in /var/sysgen/system. The IPL statement, which like the VECTOR statement is documented in both the system(4) reference page and the /var/sysgen/system/irix.sm file itself, has only two parameters:

level The VME interrupt level to be directed, 0 to 7 (the same value that is coded as ipl= in the VECTOR statement.
cpu The number of the CPU that should handle all VME interrupts at this level.

The purpose of the IPL statement is to send interrupts from specific devices to a specific CPU. There are two contradictory reasons for doing this:

The IPL statement cannot direct interrupts from a specific device; it directs all interrupts that occur at the specified level.


Next | Prev | Up | Top | Contents | Index